项目地址:https://github.com/yowiv/NodeSeek-Signin
这篇文章是如何使用这个脚本,并且每天随机一个时间执行签到,不至于天天签到同一个时间,容易被人逮着跑自动签到。
1、部署自动签到
例如我习惯使用宝塔,所以在宝塔下面新建文件夹
cd 到这个文件夹,例如:cd /www/wwwroot/auto
之后下载项目完整文件,例如 wget https://github.com/yowiv/NodeSeek-Signin/archive/refs/heads/main.zip
解压文件,在执行脚本 test_run.py 同级创建一个 .env 文件,权限改成 755 www 即可。
文件内填写内容:
NS_COOKIE=1&2&3
# 账户配置
# USER1=your_username2
# PASS1=your_username2
# USER2=your_username2
# PASS2=your_password2
# --- 验证码配置 (二选一) ---
# 方案A: 自建 CloudFreed 服务
SOLVER_TYPE=turnstile
API_BASE_URL=https://your_cloudflare_service_ip:3000
CLIENTT_KEY=your_cloudfreed_client_key
# 方案B: YesCaptcha 服务
# SOLVER_TYPE=yescaptcha
# # YesCaptcha 国内节点: https://cn.yescaptcha.com, 国际节点: https://api.yescaptcha.com
# API_BASE_URL=https://api.yescaptcha.com
# CLIENTT_KEY=your_yescaptcha_client_key
# 功能配置
# NS_RANDOM=true
# 每日运行时间配置
# 支持固定时间 (例如 '09:00') 或随机时间范围 (例如 '08:00-10:59')
# 如果不设置,默认为 '08:00-10:59'
# RUN_AT=09:00
RUN_AT=08:00-10:59
# 通知配置
# TG_BOT_TOKEN="TG"
# TG_USER_ID="ID"
# TG_THREAD_ID="1"
# 模拟Docker环境,用于本地测试
# IN_DOCKER=true
我这边是使用的cookies的方式,若是想使用账号密码方式请自行摸索。
注意:cookie模式大概有效期一个月,当cookie过期就无法签到,到时候需要进入 .env 文件更新账号新的cookie才行
填写完毕后,可以在本级目录下,使用 python3 test_run.py 执行一次,不出意外即可成功实现签到。
若使用宝塔定时签到需要修改文件test_run.py中的引用为完整地址。
至此签到已经可以正确运行。
但是我需要的是随机时间签到,而不是每天同一个时间准点签到。这样做,可以让我们看起来更像是一个真人,而不是一个定时定量准时签到的无情机器。
2、随机时间签到
我的做法是在目录下新建一个 sh 脚本,每天定时执行这个脚本,然后这个脚本每天随机等待一定的时间才开始运行自动签到程序。
脚本如下:脚本是gemini写的,每天的7点执行
#!/bin/bash
# 定义要执行的Python脚本路径
TARGET_SCRIPT="/www/wwwroot/moren.com/nodeseek/test_run.py"
echo "已进入sh脚本!"
# 使用一个无限循环来确保脚本在目标时间已过时能重新计算
while true; do
# 生成一个 7:00 到 22:00 之间的随机秒数
# 15 小时 (22-7) = 54000 秒,随机范围 0-54000
random_seconds=$(( RANDOM % 54001 ))
# 计算目标执行时间(今天的 7:00 + 随机秒数)
# 使用 date 命令的 +%s 格式化,将时间转换为时间戳
target_time=$(date -d "7:00 today + $random_seconds seconds" +%s)
# 获取当前时间的时间戳
current_time=$(date +%s)
# 如果目标时间已过,输出提示并重新进入循环
if [ "$target_time" -lt "$current_time" ]; then
echo "目标时间已过,重新计算中..."
continue
fi
# 计算需要等待的秒数
delay_seconds=$(( target_time - current_time ))
# 将目标时间戳格式化为可读的时间
readable_time=$(date -d "@$target_time" +"%H:%M:%S")
echo "将在 $delay_seconds 秒后 ($readable_time) 执行脚本。"
sleep "$delay_seconds"
# 执行你的 Python 脚本
echo "正在执行 $TARGET_SCRIPT ..."
# 使用 if/else 结构来检查脚本是否成功执行
if python3 "$TARGET_SCRIPT"; then
echo "脚本执行成功!"
# 成功后退出循环
break
else
# 失败后输出错误信息并退出
echo "执行脚本时出错,退出。"
break
fi
done
这里我也想到还有一个问题的存在,就是我目前使用2个账号,这2个账号的签到间隔没有隔开,若是真的打击自动签到,那2个账号天天都是相差不到几秒钟一起签到,而且还用的是同一个IP地址,是个人都能看出问题。
同时也是在赌,毕竟是一个打发闲暇时间的vps论坛而已,自是不必较真。
才发现,scheduler.py 作者本来就考虑到随机时间签到了,是我多次一举了。
但都差不多,我就这么用了。